import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import org.fusesource.jansi.AnsiConsole;

public class CadastroBolsa {

	public static void cabolsa() {
		AnsiConsole.out.print("\u001b[2J");
		Scanner dados = new Scanner(System.in);
		SimpleDateFormat datamascara = new SimpleDateFormat("dd/MM/yyyy");
		SimpleDateFormat dataconver = new SimpleDateFormat("yyyy-MM-dd");
		short x=1, tipobolsa=0, tiposangue=0;
		long bolsa=0, id=0;
		boolean erro;
		String validade="", databanco="";
		Date recebedata;
		System.out.println("___________________________________Hemouna______________________________________");
		System.out.println("_____________________________Cadastros - Bolsas_________________________________");
		System.out.println("\n\n\n");
		try{
			Class.forName("org.hsqldb.jdbcDriver" ); 	    
			Connection con = DriverManager.getConnection("jdbc:hsqldb:file:Banco/BD", "sa", "");
			Statement stm = con.createStatement();  
			while (x == 1){
				erro = true;
				System.out.print("Numero da bolsa: ");
				while (erro == true){
					try {
						bolsa = dados.nextLong();
						ResultSet rs = stm.executeQuery("SELECT * FROM bolsadesangue where id="+bolsa);
						while (rs.next()){
							id = rs.getInt("id");
						}
						if (id == bolsa){
							System.out.println("Esta bolsa ja esta cadastrada. Informe outra.");
						} else {
							erro = false;
						}
					} catch (Exception e) {
						System.out.print("Informe somente numeros\n");
						dados.nextLine();
					}
				}
				erro = true;
				System.out.println("\nGrupo sanguineo: ");
				System.out.printf("+----------+--------+--------+--------+--------+---------+---------+-----------+");
				System.out.printf("|   1 - O+ | 2 - O- | 3 - A+ | 4 - A- | 5 - B+ |  6 - B- | 7 - AB+ | 8 - AB-   |");
				System.out.printf("+----------+--------+--------+--------+--------+---------+---------+-----------+\n");
				while (erro == true){
					tiposangue = dados.nextShort();
					if (tiposangue == 1 || tiposangue == 2 || tiposangue == 3 || tiposangue == 4 || tiposangue == 5 || tiposangue == 6 || tiposangue == 7 || tiposangue == 8){
						erro = false;
					} else {
						System.out.println("Opcao invalida. Informe outra opcao.");
					}
				}
				erro = true;
				System.out.println("\nTipo de bolsa: ");
				System.out.printf("+-------------------------------------+----------------------------------------+");
				System.out.printf("|      1 - Concentrado de Hemacia     |       2 - Concentrado de Plaqueta      |");
				System.out.printf("+-------------------------------------+----------------------------------------+");
				System.out.printf("|      3 - Plasma                     |       4 - Crioprecipitados             |");
				System.out.printf("+-------------------------------------+----------------------------------------+\n");
				while (erro == true){
					tipobolsa = dados.nextShort();
					if (tipobolsa == 1 || tipobolsa == 2 || tipobolsa == 3 || tipobolsa == 4){
						erro = false;
					} else {
						System.out.println("Opcao invalida. Informe outra opcao.");
					}
				}
				dados.nextLine();
				System.out.println("\nValidade da bolsa (dd/mm/aaaa): ");
				erro = true;
				while (erro == true){
					validade = dados.nextLine();
					try{
						recebedata = datamascara.parse(validade);
						databanco = dataconver.format(recebedata);
						erro = false;
					} catch (ParseException e) {
						System.out.println("Data informada invalida ou no formato incorreto. Informe novamente.");
					}
				}
				
				stm.execute("INSERT INTO BOLSADESANGUE VALUES("+bolsa+","+tipobolsa+","+tiposangue+",'"+databanco+"','0')");
		
				System.out.printf("\n+------------------------------------------------------------------------------+");
				System.out.printf("|                      Cadastro realizado com sucesso                          |");
				System.out.printf("+------------------------------------------------------------------------------+");
				System.out.println("\n\nCadastrar outra bolsa? 1-Sim ou 2-Nao");
				x = dados.nextShort();
				System.out.print("\n\n");
			}
			stm.execute("SHUTDOWN");
		}catch(ClassNotFoundException e){
		    System.out.println("Erro ao carregar o driver JDBC. ");
		}catch(Exception e){
		    System.out.println("Erro de SQL: "+e);
		    e.printStackTrace();
		}
	}
}


